package thread;

/**
 * @author ypz
 * @date 2021/9/30 16:53
 */
public class YieldTest extends Thread {
    public YieldTest(String threadName) {
        super(threadName);
    }

    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println(Thread.currentThread().getName()+",i="+i);
            if (i == 10){
                /**
                 * 处理器原则：单核CPU同一时刻只能有一个线程进行执行
                 * 当前线程调用yield方法，则该线程会让出CPU占有权，进入Runnable状态，让同一优先级的Runnable状态的线程已抢占的形式进入CPU执行
                 * 当然，执行yield方法进入Runnable的线程有可能进入到Runnable线程后又马上被执行。
                 * */
                yield();
            }
        }
    }

    public static void main(String[] args) {
        Thread t1 = new YieldTest("thread1");
        Thread t2 = new YieldTest("thread2");
        t1.setPriority(1);
        t2.setPriority(1);
        t1.start();
        t2.start();
    }

}
